# This makes the coordinate polar instead of cartesian.
coord_polar(start = 0)
# Create dataset
data=data.frame(
id=seq(1,60),
individual=paste( "Mister ", seq(1,60), sep=""),
value=sample( seq(10,100), 60, replace=T)
)
# ----- This section prepare a dataframe for labels ---- #
# Get the name and the y position of each label
label_data=data
# calculate the ANGLE of the labels
number_of_bar=nrow(label_data)
angle= 90 - 360 * (label_data$id-0.5) /number_of_bar     # I substract 0.5 because the letter must have the angle of the center of the bars. Not extreme right(1) or extreme left (0)
# calculate the alignment of labels: right or left
# If I am on the left part of the plot, my labels have currently an angle < -90
label_data$hjust<-ifelse( angle < -90, 1, 0)
# flip angle BY to make them readable
label_data$angle<-ifelse(angle < -90, angle+180, angle)
# Start the plot
p = ggplot(data, aes(x=as.factor(id), y=value)) +       # Note that id is a factor. If x is numeric, there is some space between the first bar
# This add the bars with a blue color
geom_bar(stat="identity", fill=alpha("skyblue", 0.7)) +
# Limits of the plot = very important. The negative value controls the size of the inner circle, the positive one is useful to add size over each bar
ylim(-100,120) +
# Custom the theme: no axis title and no cartesian grid
theme_minimal() +
theme(
axis.text = element_blank(),
axis.title = element_blank(),
panel.grid = element_blank(),
plot.margin = unit(rep(-1,4), "cm")      # Adjust the margin to make in sort labels are not truncated!
) +
# This makes the coordinate polar instead of cartesian.
coord_polar(start = 0) +
# Add the labels, using the label_data dataframe that we have created before
geom_text(data=label_data, aes(x=id, y=value+10, label=individual, hjust=hjust), color="black", fontface="bold",alpha=0.6, size=2.5, angle= label_data$angle, inherit.aes = FALSE )
p
# Custom the theme: no axis title and no cartesian grid
theme_minimal() +
theme(
axis.text = element_blank(),
axis.title = element_blank(),
panel.grid = element_blank(),
plot.margin = unit(rep(-2,4), "cm")     # This remove unnecessary margin around plot
) +
# This makes the coordinate polar instead of cartesian.
coord_polar(start = 0)
# Make the plot
p = ggplot(data = Category_install, aes(x=as.factor(Category_install$mean_install), y=Category_install$Category)) +       # Note that id is a factor. If x is numeric, there is some space between the first bar
# This add the bars with a blue color
geom_bar(stat="Category", fill=alpha("blue", 0.3)) +
# Limits of the plot = very important. The negative value controls the size of the inner circle, the positive one is useful to add size over each bar
ylim(-1000000,50000000) +
# Custom the theme: no axis title and no cartesian grid
theme_minimal() +
theme(
axis.text = element_blank(),
axis.title = element_blank(),
panel.grid = element_blank(),
plot.margin = unit(rep(-2,4), "cm")     # This remove unnecessary margin around plot
) +
# This makes the coordinate polar instead of cartesian.
coord_polar(start = 0)
# Make the plot
p = ggplot(data = Category_install, aes(x=as.factor(Category_install$mean_install), y=Category_install$Category)) +       # Note that id is a factor. If x is numeric, there is some space between the first bar
# This add the bars with a blue color
geom_bar(stat="identity", fill=alpha("blue", 0.3)) +
# Limits of the plot = very important. The negative value controls the size of the inner circle, the positive one is useful to add size over each bar
ylim(-1000000,50000000) +
# Custom the theme: no axis title and no cartesian grid
theme_minimal() +
theme(
axis.text = element_blank(),
axis.title = element_blank(),
panel.grid = element_blank(),
plot.margin = unit(rep(-2,4), "cm")     # This remove unnecessary margin around plot
) +
# This makes the coordinate polar instead of cartesian.
coord_polar(start = 0)
p
# Make the plot
p = ggplot(data = Category_install, aes(x=as.factor(Category_install$mean_install), y=Category_install$Category)) +       # Note that id is a factor. If x is numeric, there is some space between the first bar
# This add the bars with a blue color
geom_bar(stat="identity", fill=alpha("blue", 0.3)) +
# Limits of the plot = very important. The negative value controls the size of the inner circle, the positive one is useful to add size over each bar
ylim(-10000,5000000) +
# Custom the theme: no axis title and no cartesian grid
theme_minimal() +
theme(
axis.text = element_blank(),
axis.title = element_blank(),
panel.grid = element_blank(),
plot.margin = unit(rep(-2,4), "cm")     # This remove unnecessary margin around plot
) +
# This makes the coordinate polar instead of cartesian.
coord_polar(start = 0)
p
# Create data
set.seed(1000)
data=data.frame(x=LETTERS[1:26], y=abs(rnorm(26)))
# Reorder the data
data=data %>%
arrange(y) %>%
mutate(x=factor(x,x))
# Plot
png("~/Dropbox/R_GG/R_GRAPH/#304_Lollipop_with_highlighted_group.png", height = 480, width=480)
p = ggplot(data, aes(x=x, y=y)) +
geom_segment( aes(x=x, xend=x, y=0, yend=y ), color=ifelse(data$x %in% c("A","D"), "orange", "grey"), size=ifelse(data$x %in% c("A","D"), 1.3, 0.7) ) +
geom_point( color=ifelse(data$x %in% c("A","D"), "orange", "grey"), size=ifelse(data$x %in% c("A","D"), 5, 2) ) +
theme_light() +
coord_flip() +
theme(
legend.position="none",
panel.grid.major.y = element_blank(),
panel.border = element_blank(),
axis.ticks.y = element_blank()
) +
xlab("") +
ylab("Value of Y")
p
dev.off()
# You can even add a few annotation on the plot !
png("~/Dropbox/R_GG/R_GRAPH/#304_Lollipop_with_highlighted_group2.png", height = 480, width=480)
p +
annotate("text", x = grep("D", data$x), y = data$y[which(data$x=="D")]*1.2, label = "Group D is very impressive", color="orange", size=4 , angle=0, fontface="bold", hjust=0) +
annotate("text", x = grep("A", data$x), y = data$y[which(data$x=="A")]*1.2, label = paste("Group A is not too bad\n (val=",data$y[which(data$x=="A")] %>% round(2),")",sep="" ) , color="orange", size=4 , angle=0, fontface="bold", hjust=0) +
ggtitle("How did groups A and D perform?")
ggplot(data = Category_install, aes(x=Category_install$Category , y=Category_install$mean_install)) + geom_col()
ggplot(data = Category_install, aes( x = recorder(Category_install$Category,-Category_install$mean_install) , y=Category_install$mean_install)) + geom_col()
ggplot(data = Category_install, aes( x = reorder(Category_install$Category,-Category_install$mean_install) , y=Category_install$mean_install)) + geom_col()
ggplot(data = Category_install, aes( x = reorder(Category_install$Category,-Category_install$mean_install) , y=Category_install$mean_install)) + geom_col() + coord_flip()
result <- ggplot(data = Category_install, aes( x = reorder(Category_install$Category,-Category_install$mean_install) , y=Category_install$mean_install)) + geom_col() + coord_flip()
result + labs(x="장르르",y="다운로드",title = "장르별 다운로드 수")
result + labs(x="장르",y="다운로드",title = "장르별 다운로드 수")
x=seq(0, 2*pi, length.out=100)
data=data.frame(x=x, y=sin(x) + rnorm(100, sd=0.2))
# Add a column with your condition for the color
data=data %>% mutate(mycolor = ifelse(y>0, "type1", "type2"))
# plot
ggplot(data, aes(x=x, y=y)) +
geom_segment( aes(x=x, xend=x, y=0, yend=y, color=mycolor), size=1.3, alpha=0.9) +
theme_light() +
theme(
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=0, yend=Category_install$mean_install, color=mycolor), size=100, alpha=0.9) +
theme_light() +
theme(
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
mycolor <- ifelse(Category_install$Type == 'Free', "type1", "type2")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=0, yend=Category_install$mean_install, color=mycolor), size=100, alpha=0.9) +
theme_light() +
theme(
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=0, yend=Category_install$mean_install, color=mycolor), size=100000, alpha=0.9) +
theme_light() +
theme(
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=100, yend=Category_install$mean_install, color=mycolor), size=100000, alpha=0.9) +
theme_light() +
theme(
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=100, yend=Category_install$mean_install, color=mycolor), size=100000, alpha=0.9) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=100, yend=Category_install$mean_install, color=mycolor), size=1.3, alpha=0.9) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=100, yend=Category_install$mean_install, color=mycolor), size=1.5, alpha=0.9) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=100, yend=Category_install$mean_install, color=mycolor), size=1.5, alpha=1) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=10000, yend=Category_install$mean_install, color=mycolor), size=1.5, alpha=0.9) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=10000, yend=Category_install$mean_install, color=mycolor), size=1, alpha=0.9) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=1, yend=Category_install$mean_install, color=mycolor), size=1, alpha=0.9) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Type, xend=Category_install$Category, y=1, yend=Category_install$mean_install, color=mycolor), size=1, alpha=0.9) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Category, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Type, xend=Category_install$Type, y=1, yend=Category_install$mean_install, color=mycolor), size=1, alpha=0.9) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# plot
ggplot(data = Category_install, aes(x=Category_install$Type, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=1, yend=Category_install$mean_install, color=mycolor), size=1, alpha=0.9) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
mycolor <- ifelse(Category_install$Type == 'Paid', "type1", "type2")
# plot
ggplot(data = Category_install, aes(x=Category_install$Type, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=1, yend=Category_install$mean_install, color=mycolor), size=1, alpha=0.9) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
result + labs(x="장르",y="다운로드",title = "장르별 다운로드 수")
Category_review <- google2 %>%
filter(!is.na(Category) & !is.na(Type) & !is.na(Reviews)) %>%
group_by(Category , Type) %>%
summarise(mean_review = mean(Reviews)) %>%
arrange(desc(mean_review))
result1 <- ggplot(data = Category_review, aes( x = reorder(Category_review$Category,-Category_review$mean_review) , y=Category_review$mean_review)) + geom_col() + coord_flip()
result1 + labs(x="장르",y="리뷰 수",title = "장르별 리뷰뷰 수")
Category_review <- google2 %>%
filter(!is.na(Category) & !is.na(Type) & !is.na(Reviews)) %>%
group_by(Category , Type) %>%
summarise(mean_review = mean(Reviews)) %>%
arrange(desc(mean_review))
#####################
## 장르별 리뷰수
str(google2$Reviews)
summary(google2$Reviews)
class(google2$Reviews)
google2$Reviews <- as.numeric(google2$Reviews)
summary(google2$Reviews)
class(google2$Reviews)
Category_review <- google2 %>%
filter(!is.na(Category) & !is.na(Type) & !is.na(Reviews)) %>%
group_by(Category , Type) %>%
summarise(mean_review = mean(Reviews)) %>%
arrange(desc(mean_review))
result1 <- ggplot(data = Category_review, aes( x = reorder(Category_review$Category,-Category_review$mean_review) , y=Category_review$mean_review)) + geom_col() + coord_flip()
result1 + labs(x="장르",y="리뷰 수",title = "장르별 리뷰뷰 수")
Category_review1 <- google2 %>%
filter(!is.na(Category) & !is.na(Type) & !is.na(Reviews)) %>%
group_by(Type, Category) %>%
summarise(mean_review = mean(Reviews)) %>%
arrange(desc(mean_review))
View(Category_review1)
#########################################################
install.packages("packcircles")
library(parkcircles)
#########################################################
install.packages("packcircles")
library(packcircles)
install.packages("ggplot2")
install.packages("ggplot2")
install.packages("ggplot2")
library(ggplot2)
install.packages("viridis")
library(viridis)
# Create data
data = data.frame(Category_install$Category, Category_install$mean_install)
# Generate the layout. sizetype can be area or radius, following your preference on what to be proportional to value.
packing <- circleProgressiveLayout(data$Category_install.mean_install, sizetype='area')
# Generate the layout. sizetype can be area or radius, following your preference on what to be proportional to value.
packing <- circleProgressiveLayout(data$Category_install$mean_install, sizetype='area')
# Create data
data <- data.frame(Category_install$Category, Category_install$mean_install)
# Generate the layout. sizetype can be area or radius, following your preference on what to be proportional to value.
packing <- circleProgressiveLayout(data$Category_install$mean_install, sizetype='area')
library(viridis)
# Generate the layout. sizetype can be area or radius, following your preference on what to be proportional to value.
packing <- circleProgressiveLayout(data$Category_install$mean_install, sizetype='area')
# Create data
data <- data.frame(category = Category_install$Category, mean = Category_install$mean_install)
# Generate the layout. sizetype can be area or radius, following your preference on what to be proportional to value.
packing <- circleProgressiveLayout(data$category, sizetype='area')
library(packcircles)
#########################################################
install.packages("packcircles")
install.packages("packcircles")
library(packcircles)
install.packages("ggplot2")
install.packages("ggplot2")
library(ggplot2)
install.packages("viridis")
install.packages("viridis")
library(viridis)
install.packages("viridis")
install.packages("viridis")
library(viridis)
# Generate the layout. sizetype can be area or radius, following your preference on what to be proportional to value.
packing <- circleProgressiveLayout(data$category, sizetype='area')
result1 <- ggplot(data = Category_review, aes( x = reorder(Category_review$Category,-Category_review$mean_review) , y=Category_review$mean_review)) + geom_col() + coord_flip()
result1 + labs(x="장르",y="리뷰 수",title = "장르별 리뷰뷰 수")
# 1 -- Custom the color: whatever palette. (see ggplot2 section for more explanation)
ggplot() +
geom_polygon(data = dat.gg, aes(x, y, group = id, fill=as.factor(id)), colour = "black", alpha = 0.6) +
scale_fill_manual(values = magma(nrow(data))) +
geom_text(data = data, aes(x, y, size=value, label = group)) +
scale_size_continuous(range = c(1,4)) +
theme_void() +
theme(legend.position="none") +
coord_equal()
library(ggplot2)
# 1 -- Custom the color: whatever palette. (see ggplot2 section for more explanation)
ggplot() +
geom_polygon(data = dat.gg, aes(x, y, group = id, fill=as.factor(id)), colour = "black", alpha = 0.6) +
scale_fill_manual(values = magma(nrow(data))) +
geom_text(data = data, aes(x, y, size=value, label = group)) +
scale_size_continuous(range = c(1,4)) +
theme_void() +
theme(legend.position="none") +
coord_equal()
# Create data
data <- data.frame(category = Category_install$Category, mean = Category_install$mean_install)
# Generate the layout. sizetype can be area or radius, following your preference on what to be proportional to value.
packing <- circleProgressiveLayout(data$category, sizetype='area')
data = cbind(data, packing)
dat.gg <- circleLayoutVertices(packing, npoints=50)
# 1 -- Custom the color: whatever palette. (see ggplot2 section for more explanation)
ggplot() +
geom_polygon(data = dat.gg, aes(x, y, group = id, fill=as.factor(id)), colour = "black", alpha = 0.6) +
scale_fill_manual(values = magma(nrow(data))) +
geom_text(data = data, aes(x, y, size=value, label = group)) +
scale_size_continuous(range = c(1,4)) +
theme_void() +
theme(legend.position="none") +
coord_equal()
result <- ggplot(data = Category_install, aes( x = reorder(Category_install$Category,-Category_install$mean_install) , y=Category_install$mean_install)) + geom_col() + coord_flip()
result + labs(x="장르",y="다운로드",title = "장르별 다운로드 수")
result1 <- ggplot(data = Category_review, aes( x = reorder(Category_review$Category,-Category_review$mean_review) , y=Category_review$mean_review)) + geom_col() + coord_flip()
result1 + labs(x="장르",y="리뷰 수",title = "장르별 리뷰뷰 수")
result1 <- ggplot(data = Category_review, aes( x = reorder(Category_review$Category) , y=Category_review$mean_review)) + geom_col() + coord_flip()
result1 + labs(x="장르",y="리뷰 수",title = "장르별 리뷰뷰 수")
result1 <- ggplot(data = Category_review, aes( x = reorder(Category_review$Category,-Category_review$mean_review) , y=Category_review$mean_review)) + geom_col() + coord_flip()
result1 + labs(x="장르",y="리뷰 수",title = "장르별 리뷰뷰 수")
result1 <- ggplot(data = Category_review, aes( x = reorder(Category_review$Category,-Category_review$mean_review) , y=Category_review$mean_review)) + geom_col() + coord_flip()
result1 + labs(x="장르",y="리뷰 수",title = "장르별 리뷰뷰 수")
# Make the plot
p = ggplot(data = Category_install, aes(x=as.factor(Category_install$mean_install), y=Category_install$Category)) +       # Note that id is a factor. If x is numeric, there is some space between the first bar
# This add the bars with a blue color
geom_bar(stat="identity", fill=alpha("blue", 0.3)) +
# Limits of the plot = very important. The negative value controls the size of the inner circle, the positive one is useful to add size over each bar
ylim(-10000,5000000) +
# Custom the theme: no axis title and no cartesian grid
theme_minimal() +
theme(
axis.text = element_blank(),
axis.title = element_blank(),
panel.grid = element_blank(),
plot.margin = unit(rep(-2,4), "cm")     # This remove unnecessary margin around plot
) +
# This makes the coordinate polar instead of cartesian.
coord_polar(start = 0)
library(ggplot2)
# Make the plot
p = ggplot(data = Category_install, aes(x=as.factor(Category_install$mean_install), y=Category_install$Category)) +       # Note that id is a factor. If x is numeric, there is some space between the first bar
# This add the bars with a blue color
geom_bar(stat="identity", fill=alpha("blue", 0.3)) +
# Limits of the plot = very important. The negative value controls the size of the inner circle, the positive one is useful to add size over each bar
ylim(-10000,5000000) +
# Custom the theme: no axis title and no cartesian grid
theme_minimal() +
theme(
axis.text = element_blank(),
axis.title = element_blank(),
panel.grid = element_blank(),
plot.margin = unit(rep(-2,4), "cm")     # This remove unnecessary margin around plot
) +
# This makes the coordinate polar instead of cartesian.
coord_polar(start = 0)
p
# plot
ggplot(data = Category_install, aes(x=Category_install$Type, y=Category_install$mean_install)) +
geom_segment( aes(x=Category_install$Category, xend=Category_install$Category, y=1, yend=Category_install$mean_install, color=mycolor), size=1, alpha=0.9) +
theme_light() +
theme(
axis.text.x = element_text(angle = 90),
legend.position = "none",
panel.border = element_blank(),
) +
xlab("") +
ylab("Value of Y")
# 1 -- Custom the color: whatever palette. (see ggplot2 section for more explanation)
ggplot() +
geom_polygon(data = dat.gg, aes(x, y, group = id, fill=as.factor(id)), colour = "black", alpha = 0.6) +
scale_fill_manual(values = magma(nrow(data))) +
geom_text(data = data, aes(x, y, size=value, label = group)) +
scale_size_continuous(range = c(1,4)) +
theme_void() +
theme(legend.position="none") +
coord_equal()
library(ggplot2)
# 1 -- Custom the color: whatever palette. (see ggplot2 section for more explanation)
ggplot() +
geom_polygon(data = dat.gg, aes(x, y, group = id, fill=as.factor(id)), colour = "black", alpha = 0.6) +
scale_fill_manual(values = magma(nrow(data))) +
geom_text(data = data, aes(x, y, size=value, label = group)) +
scale_size_continuous(range = c(1,4)) +
theme_void() +
theme(legend.position="none") +
coord_equal()
data = cbind(data, packing)
dat.gg <- circleLayoutVertices(packing, npoints=50)
# 1 -- Custom the color: whatever palette. (see ggplot2 section for more explanation)
ggplot() +
geom_polygon(data = dat.gg, aes(x, y, group = id, fill=as.factor(id)), colour = "black", alpha = 0.6) +
scale_fill_manual(values = magma(nrow(data))) +
geom_text(data = data, aes(x, y, size=value, label = group)) +
scale_size_continuous(range = c(1,4)) +
theme_void() +
theme(legend.position="none") +
coord_equal()
